The present invention relates generally to displaying information on a computer system, and more particularly to displaying information uniformly on various computer data input devices.
In the past, personal computer systems were generally stand-alone systems in which the computer displayed information to a single user on a single display device (e.g., a computer monitor). However, as computers have become increasingly sophisticated, they frequently have a variety of auxiliary display devices, in addition to the primary display device, to which they can display information. For example, peripheral devices such as input/output (I/O) devices often have integrated displays that are used to display information about the peripheral device. If these peripheral devices can also display information that they receive from the computer system, then they can act as auxiliary display devices for the system. Examples of peripheral devices that often have such integrated displays include output devices such as printers and input devices such as scanners. The integrated displays of such devices can vary widely in their size and display capabilities, such as the number of display lines, the number of colors, the types and sizes of fonts, and the ability to display non-textual information such as images, animation, or full-motion video. In addition to these primary and auxiliary display devices that are part of the computer system (i.e., local display devices), computers increasingly can also display information on display devices that are part of other computer systems (i.e., non-local display devices) via a shared network between the systems. These non-local display devices can also vary in size and display capability.
Each display device typically has a display interface that allows a program executing on a computer system to invoke the display capabilities of the device. These display interfaces (e.g., a set of window display functions to display information in a window of a graphical user interface) can differ for different types of display devices, and even for different devices of the same type. For example, since operating systems normally provide a display interface to the primary display device, different operating systems typically provide different display interfaces. Thus, the display interface to a primary display device on a computer system running the WINDOWS operating system will be significantly different than the display interface to that same display device on a computer system running the MACOS operating system. In addition to the differences in display interfaces caused by operating systems, peripheral devices with integrated displays typically have proprietary display interfaces that are different from the display interface to the primary display device.
Many local display devices are tethered to the computer system via a physical connection such as a copper wire or a fiber-optic cable. However, in addition to local tethered display devices, a computer system may need to display information on display devices that are local but untethered (e.g., a wireless I/O device) or to display devices that are non-local (e.g., a primary display of another computer system). Devices that are non-local and devices that are local but untethered are referred to as remote devices since they often can be located some distance from the computer system. As described above, an application program typically invokes a function of the appropriate display interface to display information on a tethered local display device. However, to display information on a remote device, it is necessary to use a communication interface (e.g., a network message protocol) in addition to a display interface. Communication interfaces allow a program executing on a computer system to communicate information to a remote device over a variety of transmittal mediums such as copper wire, fiber-optic cable, or various wireless mediums. Therefore, to display information on a remote display device (e.g., a local wireless auxiliary display device or a non-local primary display device of another computer system), an application program will typically have to generate information that can invoke the display interface to the remote device, and will then have to invoke a function in a communication interface to transmit the information to the device. When the information is received by the remote device, the information can then be used to invoke the display interface. Typically, the information transmitted will be an instruction that invokes a function of the display interface.
Due to differences in display interfaces and display capabilities, separate application programs are typically developed when information must be displayed using different display interfaces. For example, a product like Microsoft Word will typically have one application program for a computer system running the WINDOWS operating system, and a separate application program for a computer system running the MACOS operating system. Even if the same information is to be displayed, different application programs are often created. For similar reasons, it is also typically the case that separate application programs are developed for different types of communication schemes (e.g., local tethered display versus local untethered display). Even if a single application program is developed that can display information on either a local tethered or a remote display device, the application program will have to contain separate code to invoke the display interface to the tethered device, to invoke the communication interface to the remote device, and to invoke the display interface to the remote device.
Having multiple separate application programs creates a variety of problems. For example, the developers for each application program will have to determine the display interfaces and communication interfaces that the application program will use, and will then spend a large amount of effort to create the appropriate program code to display information using these interfaces. This effort will largely be duplicated for each of the application programs that are created. In addition to duplication of effort related to displaying information, application programs which display the same information on different display devices will also duplicate much of the code used to generate the information that will be displayed. Moreover, if separate application programs with similar functionality are modified over time, effort will have to be expended to modify each of the programs as well as to maintain consistency between the programs.
In addition to these problems of duplication of effort, it is often desirable that regardless of the display device on which information is to be displayed, that the information have a uniform visual display appearance (i.e., to appear substantially identical to users). For example, documentation will often have to be prepared for each different application program visual display appearance, and users will have to be trained on the use of each of these different visual display appearances. However, it is difficult to create a uniform visual display appearance on different display devices. Even if a single application program is displaying the same information on two display devices of the same type, the generated visual display appearances are likely to be different if different display interfaces are used. These differences in the visual display appearances can arise due to different functionality provided through the different display interfaces, or from the same type of functionality provided in a different manner (e.g., one display interface may use pop-up menus to display information to be selected by the user, while another display interface may use a pull-down menu or toolbar buttons). The problem of differences in visual display appearances is only exacerbated when there are separate application programs to display the same information, and when different display devices have different display capabilities. Even if an explicit effort is made to display the same information with a uniform visual display appearance, it is likely to be difficult and time-consuming to maintain this uniformity.
Other difficulties can arise when developing an application program that will display information on a display device other than the primary display device. For example, it may be difficult to debug problems with the application program due to the display interface or the communication interface being used (e.g., if an error occurs after interface functionality is invoked, only limited information may be returned from the interface about the error). Alternatively, if the display device for the program is a peripheral device with an integrated display, it may be difficult to obtain such a device for testing. Thus, various problems exist with displaying information on a variety of display devices, particularly when a uniform visual display appearance is desired.
Some embodiments of the present invention provide a method and system to display information with a uniform visual display appearance on a variety of computer display devices, regardless of varying display capabilities of the display devices and regardless of whether the display devices are tethered to the computer system or are remote from the computer system. The system acts as an intermediary between an application program and the display devices. The system first receives information from the application program that is to be displayed on one of the display devices. The system then determines the location and display capabilities of the display device, and generates appropriate instructions that will display the received information on the display device. These instructions are generated in such a manner as to compensate for the varying display capabilities of the display devices, thus allowing the information to appear with a uniform visual display appearance on any of the devices. If the display device is tethered to the computer system via a physical connection, the system directly invokes the display interface to the display device. If the display device is not local and tethered to the computer system (i.e., it is remote), the system instead generates instructions to directly invoke the display interface to the remote device and transmits the instructions to the remote device using a communication interface. If the application program is responding to information received from a peripheral device, the system can select an appropriate display device on which to display the response information.
In one embodiment, the system maintains a uniform visual display appearance for an application program on various display devices so as to minimize user training costs associated with different visual display appearances. In another embodiment, the system minimizes the effort required to develop application programs that can display information to various display devices and to maintain different programs that display the same information to different display devices. In yet another embodiment, the system tests a computer program that is designed to display information on one display device by displaying the information on another display device that emulates the display of the first display device.